Додатак - REPL прозор у програмима¶
У одељку Интерактиван рад поглавља Основне функције смо поменули да се REPL прозор може користити за текстуални улаз и излаз у програмима који се извршавају на микробиту.
Овде ћемо дати неколико примера како се та могућност може употребити током рада на програмима (током развоја програма).
Пример 1:
Унесимо дати програм у мју едитор, укључимо REPL прозор и ресетујмо микробит. У REPL прозору се појављује порука о грешци, коју сада можемо лакше да прочитамо:
>>> Traceback (most recent call last):
File "__main__", line 5, in <module>
ValueError: index out of bounds
Видимо да је проблем у томе што је у линији 5 програма (наредба display.set_pixel(x, y, 9)) неки од индекса ван дозвољених граница. Да бисмо лакше установили да ли је то индекс x или y и која је то његова недозвољена вредност, можемо да додамо једну print наредбу:
Затворићемо REPL прозор, пребацити измењен програм на микробит (Flash), поново отворити REPL прозор и ресетовати уређај притиском на тастер на његовој полеђини. Сада у REPL прозору видимо следеће:
>>> x = 0 y = 5
Traceback (most recent call last):
File "__main__", line 6, in <module>
ValueError: index out of bounds
Овај пут је нешто јасније у чему је проблем: вредност y је 5, а дозвољене вредности за y су од 0 до 4. Ово би требало да нам да идеју како да исправимо програм:
Испробавањем овог програма видимо да је проблем отклоњен.
Можда ви уопште не бисте овако писали прогам, а и да је требало да помогнете некоме да га исправи, можда бисте уочили грешку и самим читањем програма. Без обзира на то, овај пример ипак може да вам буде користан, јер показује како при исправљању ваших програма можете да користите REPL прозор за лакше разумевање и налажење грешака.
Пример 2:
У задатку 16 поглавља Разни задаци укључивано је неколико доњих редова екрана, зависно од вредости очитане на потенциометру. Можемо да замислимо ситуацију у којој потенциометар још увек немамо, а хтели бисмо да напишемо бар део програма и тако касније уштедимо време за друге делове пројекта.
Написати програм који осветљава екран на исти начин као у задатку 16 поглавља Разни задаци, али уместо да очитава вредности са потенциометра, користи улаз са тастатуре.
Тражени програм може да изгледа овако:
На овај начин наредбе за осветљавање и брисање екрана можемо да пишемо, испробавамо и исправљамо чак и када осим самог микробита немамо баш никакву опрему. Једном када смо задовољни како осветљавање екрана ради, треба још само да обришемо или закоментаришемо наредбу додељивања вредности са тастатуре у линији 5, а да активирамо линију 4 програма (уклонимо из ње ознаку # за коментар) и програм је спреман за употребу са потенциометром или неким сензором повезаним на пин 0.
Пример 3:
Неко од вас ће можда желети да сам направи једну или више слика које ће затим користити у својим програмима. При томе би било добро да имате могућност да слику мењате интерактивно на самом микробиту, да бисте видели како она изгледа и проценили да ли вам одговара.
Написати програм који приказује неку од готових слика на екрану микробита, а затим омогућава њено интерактивно мењање.
У програму који следи, кроз слику се иде пиксел по пиксел. Притисцима на тастер A се осветљеност текућег пиксела постепено повећава до 9, па са враћа на 0 и опет постепено повећава (у круг). Притиском на тастер B се прелази на следећи пиксел (после последњег пиксела се поново враћамо на први). Програм исписује у REPL прозор положај и тренутну осветљеност пиксела на коме се налазимо, да бисмо лакше контролисали и пратили мењање слике.
Овај програм за испробавање слика би био кориснији ако би могао да нам на захтев испише програмску репрезентацију слике. Зато ћемо претходну верзију допунити тако да при истовременом притиску на оба тастера исписује стринг облика
99999:99999:99999:99999:99999
(уместо деветки биће исписане тренутне осветљености појединих пиксела). Добијени стринг може се затим копирати из REPL прозора и пребацити у главни програм за који је слика и прављена.
Ово су само неки од примера како можете користити REPL прозор у својим недовршеним или помоћним програмима. Надамо се да сте добили идеју и да ћете наћи и друге корисне примене.